Export otherwise invalid OCaml identifiers to JavaScript

  $ . ./setup.sh
  $ cat > dune-project <<EOF
  > (lang dune 3.8)
  > (using melange 0.1)
  > EOF
  $ cat > dune <<EOF
  > (melange.emit
  >  (compile_flags -w -32)
  >  (emit_stdlib false)
  >  (preprocess (pps melange.ppx))
  >  (target js-out))
  > EOF

  $ cat > x.ml <<EOF
  > let [@mel.as POST] post= 1
  > let [@mel.as "GET"] get = 2
  > let [@mel.as "put"] other = 2
  > let [@mel.as "class"] other = 2 (* class is reserved in JS *)
  > EOF

  $ cat > x.mli <<EOF
  > val [@mel.as "GET"] get : int
  > val [@mel.as "class"] other : int
  > EOF

  $ dune build @melange

  $ cat _build/default/js-out/x.js
  // Generated by Melange
  'use strict';
  
  
  const GET = 2;
  
  const $$class = 2;
  
  module.exports = {
    GET,
    $$class,
  }
  /* No side effect */

  $ cat > z.ml <<EOF
  > let post = 1
  > let [@mel.as "POST"] js_post = post
  > EOF

  $ cat > a.ml <<EOF
  > let post = Z.post
  > EOF

  $ dune build @melange

  $ cat _build/default/js-out/z.js
  // Generated by Melange
  'use strict';
  
  
  const post = 1;
  
  const POST = 1;
  
  module.exports = {
    post,
    POST,
  }
  /* No side effect */

Duplicate `@mel.as` attributes

  $ cat > z.ml <<EOF
  > let post = 1
  > let [@mel.as "POST"] [@mel.as "OTHER"] js_post = post
  > EOF

  $ dune build @melange
  File "z.ml", line 2, characters 21-38:
  2 | let [@mel.as "POST"] [@mel.as "OTHER"] js_post = post
                           ^^^^^^^^^^^^^^^^^
  Error: Duplicate `@mel.as' attribute found
  [1]


